﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//main69&70：万能指针修改int整数值和arr数组元素值
int main69()
{
	int a = 10;//4个字节
	//int* p = &a;
	//1.使用万能指针类型void*，来接收任意类型的变量的地址值；当要改变该地址值对应的内存空间时，就要
		//强转成对应的变量类型int*的指针类型，再通过取地址*符号来改变对应的内存空间值；
	void* p = &a;
	*(int*)p = 100;
	printf("2.输出经过万能指针p改变相应的内存空间值后，a的值为：%d\n", a);//100
	printf("3.输出万能指针p对应的int*类型的内存空间值：%d\n", *(int*)p);//100

	system("pause");
	return EXIT_SUCCESS;
}
int main70(void)
{
	int arr[10] = { 0 };
	void* p = arr;
	//1.用指针来改变数组的值；先获取到arr[0]的地址值，然后再+1获取到arr[1]的地址值；
		//由于此时将void*类型，转换成int*类型的指针，则p+1，就相当于int类型+1,即内存地址值加了4个字节；
	*(int*)p = 100;//arr[0]
	*((int*)p + 1) = 200;//arr[1]
	printf("3.输出arr[0]和arr[1]的地址值：%d %d\n", &arr[0], &arr[1]);//2096652 2096656
	for (int i = 0; i < 10; i++)
	{
		printf("2.输出数组arr的值，即：%d\n", arr[i]);//100 200 0 0 0 0 0 0 0 0 
	}

	return 0;
}